package com.moliku.insurance.model.dto.pingan.personal.insure;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.Date;

@Data
public class PingAnBaseInfoParam {

    /**
     *交易号(合作伙伴订单号，用于幂等性控制) String,
     *【必填,长度不要超过50】
     */
    @ApiModelProperty("交易号(合作伙伴订单号，用于幂等性控制) String")
    @NotBlank(message ="交易号(合作伙伴订单号，用于幂等性控制) String,不能为空")
    private String transactionNo;

    /**
     *实交保费 Double,
     *【必填】
     */
    @ApiModelProperty("实交保费 Double")
    @NotNull(message ="实交保费 Double,不能为空")
    private Double totalActualPremium;

    /**
     *产品编码,通过某一险种定义出来的产品的编码 String,
     *【必填：平安业务提供】
     */
    @ApiModelProperty("产品编码通过某一险种定义出来的产品的编码 String")
    @NotBlank(message ="产品编码,通过某一险种定义出来的产品的编码 String,不能为空")
    private String productCode;

    /**
     *保险起期 Date yyyy-MM-dd 24h
     *【必填】
     */
    @ApiModelProperty("保险起期 Date yyyy-MM-dd 24h")
    @NotBlank(message ="保险起期 Date yyyy-MM-dd 24h不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime insuranceBeginDate;

    /**
     *保险止期 Date yyyy-MM-dd 24h
     *【必填】
     */
    @ApiModelProperty("保险止期 Date yyyy-MM-dd 24h")
    @NotBlank(message ="保险止期 Date yyyy-MM-dd 24h不能为空")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime insuranceEndDate;

    /**
     *共保标志 0：非共保 1：共保 String,
     *【选填】
     */
    @ApiModelProperty("共保标志 0：非共保 1：共保 String")
    private String coinsuranceMark;

    /**
     *业务类型/个团属性：1-个人，2-团体 String,
     *【选填，默认个人】
     */
    @ApiModelProperty("业务类型/个团属性：1-个人，2-团体 String")
    private String businessType;

    /**
     *保单号,
     *【预留保单号必填】
     */
    @ApiModelProperty("保单号")
    private String policyNo;

    /**
     *续保类型 0-新保、1-续保 String,
     *【选填 默认0】
     */
    @ApiModelProperty("续保类型 0-新保、1-续保 String")
    private String renewalType;

    /**
     *续保上次保单号 String,
     *【选填】
     */
    @ApiModelProperty("续保上次保单号 String")
    private String lastPolicyNo;

    /**
     *共保我司比例  Double,
     *【共保业务必填】
     */
    @ApiModelProperty("共保我司比例  Double")
    @NotNull(message ="共保我司比例  Double,不能为空")
    private Double reinsureScale;

    /**
     *期缴期数 String
     *【选填，期缴必填】
     */
    @ApiModelProperty("期缴期数 String")
    @NotBlank(message ="期缴期数 String不能为空")
    private String payTermNo;
}
